﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using NjaNjam.MongoRepository;
using NjamNjam.Model.Entities;
using NjamNjamAdminApp.Interfaces;
using System.Linq;

namespace NjamNjamAdminApp.Views
{
    public partial class VrstaPonudeView : DevExpress.XtraEditors.XtraForm, IView
    {
        private readonly BindingList<VrstaPonude> m_VrstaPonude = new BindingList<VrstaPonude>(); 

        private readonly MongoRepository m_Repository = new MongoRepository();

        public VrstaPonudeView()
        {
            InitializeComponent();
            vrstaPonudeBindingSource.DataSource = m_VrstaPonude;
            m_VrstaPonude.AddingNew += (s, e) =>
                                       {
                                           long id = 1;
                                           if (m_VrstaPonude.Count > 0)
                                           {
                                               id = m_VrstaPonude.Max(x => x.Id) + 1;
                                           }
                                           e.NewObject = new VrstaPonude {Id = id};
                                       };
        }

        public void NoviUnos()
        {
            m_VrstaPonude.AddNew();
        }

        public void Sacuvaj()
        {
            var vrstaPonude = IzabranaVrstaPonude();
            if (vrstaPonude != null)
            {
                m_Repository.Sacuvaj(vrstaPonude);
            }
        }

        public void Obrisi()
        {
            var vrstaPonude = IzabranaVrstaPonude();
            if (vrstaPonude != null)
            {
                m_Repository.Obrisi(vrstaPonude);
                m_VrstaPonude.Remove(vrstaPonude);
            }
        }

        public void Osvezi()
        {
            m_VrstaPonude.Clear();
            var vrstePonude = m_Repository.VrstePonude();
            foreach (var vrstaPonude in vrstePonude)
            {
                m_VrstaPonude.Add(vrstaPonude);
            }
        }

        public void Izvezi()
        {
        }

        protected override void OnLoad(EventArgs e)
        {
            Osvezi();
        }

        private VrstaPonude IzabranaVrstaPonude()
        {
            return gridView1.GetFocusedRow() as VrstaPonude;
        }
    }
}